Quasi-cyclic low-density parity-check (QC-LDPC) codes are a subset of LDPC codes. QC-LDPC codes are attractive compared to non-QC-LDPC codes because matrices associated with QC-LDPC codes can be stored using much less memory compared to non-QC-LDPC codes. H is an m×n parity check matrix and for QC-LDPC codes (but not non-QC-LDPC codes) H comprises of a (m/b)×(n/b) array of b×b circulants. If the QC-LDPC parity check matrix H is a full row rank matrix (i.e., all m rows are independent) then the corresponding generator matrix G can similarly be expressed in quasi-cyclic form comprising of circulants. Having both the parity check matrix (H) and generator matrix (G) be in quasi-cyclic form is attractive because it is only necessary to store one row or column vector from a circulant; from this single row or column vector of the circulant the entire matrix can be reconstructed. In contrast, it may be necessary to store the entire matrix for non-QC-LDPC codes.
There may be cases in which non-full row rank codes are desired or required. It would be desirable if techniques could be developed for using non-full row rank codes which consume less storage compared to current techniques. It would also be useful if such storage-efficient techniques could be used in a system which stores multiple (e.g. user-programmable) codes and loads a selected code (e.g., comprising a corresponding pair of generator and parity check matrices) into a configurable or programmable encoder.